package arithmetic;

import org.junit.jupiter.api.Test;

import java.util.Arrays;

/***
 * 合并数组有序数组
 *
 * @author Gaojie
 * @date 2022/3/16 20:49
 **/
public class MergeArray {

    @Test
    void test() {
        int[] nums1 = {1, 2, 3, 0, 0, 0};
        int[] nums2 = {2, 5, 6};
        int m = 3, n = 3;
        fun(nums1, nums2, m, n);
    }

    /**
     * 1.两个数组都从右边开始比较，也就是从最大值开始比较
     * 2.若 nums1 全部移动完或者 nums2 的值大于等于 nums1 的值，则 nums2 往右靠，否则 nums1 往右靠
     * 3.若 nums2 的数据全部加到 nums1 则结束
     */
    void fun(int[] nums1, int[] nums2, int m, int n) {
        if (n == 0) return;
        for (int i = m + n - 1; i >= 0; i--) {
            nums1[i] = m == 0 || nums2[n - 1] >= nums1[m - 1] ? nums2[--n] : nums1[--m];
            if (n == 0) break;
        }
        System.out.println(Arrays.toString(nums1));
    }

}